
#!/usr/bin/env python
# -*- coding: UTF-8 -*-
'''
@Project ：图灵学习 
@File    ：4.asyncio简单使用.py
@IDE     ：PyCharm 
@Author  ：ChenLiGao
@Date    ：2024-11-07 10:16
'''
import asyncio


async def work1():
    for i in range(5):
        print(f"我时异步任务1开始....{i}")
        await asyncio.sleep(1)
        print(f"我时异步任务1结束....{i}")

async def work2():
    for i in range(5):
        print(f"我时异步任务2开始....{i}")
        await asyncio.sleep(1)
        print(f"我时异步任务2结束....{i}")



# 创建事件循环对象
loop = asyncio.new_event_loop() # 如果py文件中不存在时间，循环对象则自动创建一个，如果存在则只用 存在的事件循环对象

# 在3.10以上版本中不支持在事件循环中直接传递协程对象，需要改成loop.run_until_complete(loop.create_task(work1()))
# # 调度单个任务
# loop.run_until_complete(work1()) # 调用事件循环内部的任务，当前方法接收一个协程对象

# 调度多个任务
task_list = [loop.create_task(work1()), loop.create_task(work2())]
# loop.run_until_complete(asyncio.wait(task_list)) # 传递一个列表
loop.run_until_complete(asyncio.gather(loop.create_task(work1()), loop.create_task(work2()))) # 传递任务本身